<html>
<head><meta charset="utf-8"><title>chalk roadmap · wg-traits · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/index.html">wg-traits</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html">chalk roadmap</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="163993290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/163993290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#163993290">(Apr 23 2019 at 14:13)</a>:</h4>
<p><span class="user-mention" data-user-id="131694">@scalexm</span> I spent some time this morning <a href="https://paper.dropbox.com/doc/rustc-chalk-integration--Abw0sWJiCdNGvdbQw~kVR~zTAg-QSp9zIk3MS4jzyRpEzWv6" target="_blank" title="https://paper.dropbox.com/doc/rustc-chalk-integration--Abw0sWJiCdNGvdbQw~kVR~zTAg-QSp9zIk3MS4jzyRpEzWv6">organizing a dropbox paper</a> with a kind of "brain dump" of all the things that I think <strong>chalk specifically</strong> needs. It's probably not complete and some items continue to need elaboration. Feel free to add more items or comments.</p>



<a name="163997293"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/163997293" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#163997293">(Apr 23 2019 at 14:57)</a>:</h4>
<p>const generics should probably be on there too</p>



<a name="163997365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/163997365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#163997365">(Apr 23 2019 at 14:58)</a>:</h4>
<p>(re. "complete the chalk lowering")</p>



<a name="163997384"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/163997384" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#163997384">(Apr 23 2019 at 14:58)</a>:</h4>
<p>what definition of "intersection type" are you using?</p>



<a name="163997416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/163997416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#163997416">(Apr 23 2019 at 14:59)</a>:</h4>
<p>the concept of intersection type doesn't seem to be very well-defined in general</p>



<a name="163997454"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/163997454" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#163997454">(Apr 23 2019 at 14:59)</a>:</h4>
<p>should it be different from a product of the two types?</p>



<a name="164003197"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003197" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003197">(Apr 23 2019 at 16:02)</a>:</h4>
<p>well, this is <em>something</em> of a home-brew definition, but I think it fits fairly well the standard usage</p>



<a name="164003200"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003200" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003200">(Apr 23 2019 at 16:02)</a>:</h4>
<p>it is quite distinct from a product type, yes</p>



<a name="164003209"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003209" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003209">(Apr 23 2019 at 16:02)</a>:</h4>
<p>the idea is "some value is both T1 and T2 simultaneously"</p>



<a name="164003308"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003308" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003308">(Apr 23 2019 at 16:04)</a>:</h4>
<blockquote>
<p>const generics should probably be on there too</p>
</blockquote>
<p>hmm. yes, I agree, though I wonder how much work there is here. some, at least, but likely minimal</p>



<a name="164003378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003378">(Apr 23 2019 at 16:04)</a>:</h4>
<p>i.e., this is basically a new kind of unifiable thing (in addition to types/lifetimes)</p>



<a name="164003389"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003389" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003389">(Apr 23 2019 at 16:04)</a>:</h4>
<p>well, it'd be good to answer that question</p>



<a name="164003559"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003559" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003559">(Apr 23 2019 at 16:06)</a>:</h4>
<p>(<span class="user-mention" data-user-id="131694">@scalexm</span> you around?)</p>



<a name="164003659"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003659" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003659">(Apr 23 2019 at 16:07)</a>:</h4>
<p>(I'm skimming over the comments you left in the paper doc right now)</p>



<a name="164003728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003728">(Apr 23 2019 at 16:08)</a>:</h4>
<p>Let's ask an interesting question</p>



<a name="164003768"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003768" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003768">(Apr 23 2019 at 16:08)</a>:</h4>
<p>It seems like we're moving in a direction in which the <code>chalk-solve</code> crate should be able to handle all of Rust</p>



<a name="164003791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003791">(Apr 23 2019 at 16:08)</a>:</h4>
<p>Presently, chalk elides some things -- like arbitrary arity tuples, as you pointed out</p>



<a name="164003814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003814">(Apr 23 2019 at 16:09)</a>:</h4>
<p>but also things like <code>Sized</code> trait</p>



<a name="164003819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003819">(Apr 23 2019 at 16:09)</a>:</h4>
<p>and other builtin traits</p>



<a name="164003915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003915">(Apr 23 2019 at 16:10)</a>:</h4>
<p>but trying to setup the crates from <a href="https://github.com/rust-lang-nursery/chalk/issues/214" target="_blank" title="https://github.com/rust-lang-nursery/chalk/issues/214">chalk#214</a>, it seems like a number of those details become relevant precisely around this "give me the program clauses for the goal X" callback</p>



<a name="164003926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003926">(Apr 23 2019 at 16:10)</a>:</h4>
<p>and...that is probably a good thing?</p>



<a name="164003989"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003989" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003989">(Apr 23 2019 at 16:11)</a>:</h4>
<p>that said, maybe we should talk through the doc a bit systematically? One of the things I was curious to start with was the set of <strong>goals</strong> I outlined. I am particularly interested in trying to get more specific about what it means to <strong>validate</strong> the chalk approach -- i.e., what things are we worried about?</p>



<a name="164003998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164003998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164003998">(Apr 23 2019 at 16:11)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> true, this callback is I think the only one having interactions with those arbitrary arity + builtin bounds etc questions</p>



<a name="164004068"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004068" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004068">(Apr 23 2019 at 16:12)</a>:</h4>
<blockquote>
<p>true, this callback is I think the only one having interactions with those arbitrary arity + builtin bounds etc questions</p>
</blockquote>
<p>yeah -- but it seems kind of "right" to me for that logic to ultimately live within the chalk crate</p>



<a name="164004121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004121">(Apr 23 2019 at 16:12)</a>:</h4>
<p>I guess I am thinking now of the chalk-solve crate as being the "adapter" between <em>rust syntax</em> and <em>logical predciates</em></p>



<a name="164004126"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004126" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004126">(Apr 23 2019 at 16:12)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> what worries me the most is whether we'll be able to implement a good solution for region constraints</p>



<a name="164004175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004175">(Apr 23 2019 at 16:13)</a>:</h4>
<p>I guess that connects to my top worry</p>



<a name="164004195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004195">(Apr 23 2019 at 16:13)</a>:</h4>
<p>also eventually regarding perfs, I think we still don't know if the chalk approach will be as efficient as the existing solver</p>



<a name="164004203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004203">(Apr 23 2019 at 16:14)</a>:</h4>
<p>also we presume it will be more efficient</p>



<a name="164004204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004204">(Apr 23 2019 at 16:14)</a>:</h4>
<p>I am worried in general about managing the performance -- in particular, I am worried the solver might get "lost" exploring fruitless parts of the search space</p>



<a name="164004255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004255">(Apr 23 2019 at 16:14)</a>:</h4>
<p>yes</p>



<a name="164004270"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004270" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004270">(Apr 23 2019 at 16:14)</a>:</h4>
<p>But one of the reasons it could do so, I think</p>



<a name="164004286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004286">(Apr 23 2019 at 16:14)</a>:</h4>
<p>is if it is attempting to enumerate out the possible region constraints more fully</p>



<a name="164004323"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004323" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004323">(Apr 23 2019 at 16:15)</a>:</h4>
<p>but ok so -- our two concerns so far are</p>
<ul>
<li>ensuring we can integrate region constraints in a nice way</li>
<li>perf tuning</li>
</ul>



<a name="164004334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004334">(Apr 23 2019 at 16:15)</a>:</h4>
<p>are there other parts of "supporting Rust" that we are concerned about?</p>



<a name="164004338"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004338" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004338">(Apr 23 2019 at 16:15)</a>:</h4>
<p>mostly the things i've listed feel like "just work" to me</p>



<a name="164004343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004343">(Apr 23 2019 at 16:15)</a>:</h4>
<p>not trivial by any means</p>



<a name="164004399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004399">(Apr 23 2019 at 16:16)</a>:</h4>
<p>I don't think there are any other concerns</p>



<a name="164004404"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004404" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004404">(Apr 23 2019 at 16:16)</a>:</h4>
<p>I'm looking at specialization, primarily. I guess there is some doubt as to what it'll take to make lazy norm work in practice, how many surprises we might hit there</p>



<a name="164004456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004456">(Apr 23 2019 at 16:16)</a>:</h4>
<p>OK, so let's talk out region inference a little bit perhaps</p>



<a name="164004516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004516">(Apr 23 2019 at 16:17)</a>:</h4>
<p>I have a vague plan</p>



<a name="164004519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004519">(Apr 23 2019 at 16:17)</a>:</h4>
<p>Not sure how much we've talked about it before, I forget</p>



<a name="164004614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004614">(Apr 23 2019 at 16:18)</a>:</h4>
<p>roughly speaking what I would like to do</p>



<a name="164004647"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004647" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004647">(Apr 23 2019 at 16:18)</a>:</h4>
<p>is to distinguish the "base region predicates" that polonius curently understands -- basically <code>'a: 'b</code></p>



<a name="164004655"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004655" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004655">(Apr 23 2019 at 16:19)</a>:</h4>
<p>from the more complex <a href="http://smallcultfollowing.com/babysteps/blog/2019/01/21/hereditary-harrop-region-constraints/" target="_blank" title="http://smallcultfollowing.com/babysteps/blog/2019/01/21/hereditary-harrop-region-constraints/">"hereditary harrop predicates"</a> that we sometimes produce (e.g., <code>for&lt;'a&gt; ('a: 'b)</code> and so on)</p>



<a name="164004716"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004716" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004716">(Apr 23 2019 at 16:19)</a>:</h4>
<p>I think it should be chalk's job to lowering from the HH predicates to the base predicates -- but not the base predicates we have today, which are very simple</p>



<a name="164004758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004758">(Apr 23 2019 at 16:20)</a>:</h4>
<p>today, we have </p>
<div class="codehilite"><pre><span></span>RC = &#39;a: &#39;b | RC &amp;&amp; RC
</pre></div>



<a name="164004784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004784">(Apr 23 2019 at 16:20)</a>:</h4>
<p>I would want to add</p>



<a name="164004802"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004802" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004802">(Apr 23 2019 at 16:20)</a>:</h4>
<div class="codehilite"><pre><span></span>RC = &#39;a: &#39;b | RC &amp;&amp; RC | RC || RC
</pre></div>



<a name="164004814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004814">(Apr 23 2019 at 16:20)</a>:</h4>
<p>which is of course kinda' a big deal</p>



<a name="164004836"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004836" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004836">(Apr 23 2019 at 16:20)</a>:</h4>
<blockquote>
<p>today, we have </p>
</blockquote>
<p>let me clarify -- I don't really mean in <em>chalk</em> today, but more like <em>polonius</em> today</p>



<a name="164004858"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004858" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004858">(Apr 23 2019 at 16:21)</a>:</h4>
<blockquote>
<p>I would want to add</p>
</blockquote>
<p>specifically, I want to add "or" constraints</p>



<a name="164004890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004890">(Apr 23 2019 at 16:21)</a>:</h4>
<p>yes, I remember that we talked about that</p>



<a name="164004917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004917">(Apr 23 2019 at 16:21)</a>:</h4>
<p>if you have something like</p>
<div class="codehilite"><pre><span></span><span class="k">fn</span> <span class="nf">foo</span><span class="o">&lt;</span><span class="na">&#39;a</span><span class="p">,</span><span class="w"> </span><span class="na">&#39;b</span><span class="p">,</span><span class="w"> </span><span class="n">T</span><span class="o">&gt;</span><span class="p">()</span><span class="w"></span>
<span class="k">where</span><span class="w"> </span><span class="n">T</span>: <span class="nc">Trait</span><span class="o">&lt;</span><span class="na">&#39;a</span><span class="o">&gt;</span><span class="p">,</span><span class="w"> </span><span class="n">T</span>: <span class="nc">Trait</span><span class="o">&lt;</span><span class="na">&#39;b</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
</pre></div>



<a name="164004937"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164004937" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164004937">(Apr 23 2019 at 16:21)</a>:</h4>
<p>it seems like you kind of <em>have</em> to be able to say that <code>T: Trait&lt;'c&gt; if 'c == 'a || 'c == 'b</code></p>



<a name="164005057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005057">(Apr 23 2019 at 16:22)</a>:</h4>
<p>or else to try and treat regions <em>just</em> like types--</p>



<a name="164005075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005075">(Apr 23 2019 at 16:22)</a>:</h4>
<p>and return an ambiguous result until we infer what region we want</p>



<a name="164005128"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005128" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005128">(Apr 23 2019 at 16:23)</a>:</h4>
<p>which..may actually be plausible</p>



<a name="164005156"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005156" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005156">(Apr 23 2019 at 16:23)</a>:</h4>
<p>( it'd be a big mental shift )</p>



<a name="164005282"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005282" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005282">(Apr 23 2019 at 16:24)</a>:</h4>
<p>in any case, let's run with the "or" constraints for a moment</p>



<a name="164005304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005304">(Apr 23 2019 at 16:25)</a>:</h4>
<blockquote>
<p>I think it should be chalk's job to lowering from the HH predicates to the base predicates -- but not the base predicates we have today, which are very simple</p>
</blockquote>
<p>so I explored what this would look like</p>



<a name="164005331"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005331" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005331">(Apr 23 2019 at 16:25)</a>:</h4>
<p>it looks like I didn't commit that code anywhere, I guess it's on my old mac</p>



<a name="164005345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005345">(Apr 23 2019 at 16:25)</a>:</h4>
<p>I should push it somewhere but the tl;dr was that I was messed about with lambda prolog</p>



<a name="164005358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005358">(Apr 23 2019 at 16:25)</a>:</h4>
<p>there are really just a few rules, basically</p>



<a name="164005494"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005494" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005494">(Apr 23 2019 at 16:26)</a>:</h4>
<p>I think I had a relation like <code>lower(HHRC, RC)</code> where the input was the hereditary harrop region constraint (HHRC) and the output was a list of flat constraints RC; this would of course have multiple solutions sometimes</p>



<a name="164005544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005544">(Apr 23 2019 at 16:27)</a>:</h4>
<p>but let me go look :)</p>



<a name="164005900"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164005900" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164005900">(Apr 23 2019 at 16:30)</a>:</h4>
<p>Ah, <a href="https://github.com/nikomatsakis/teyjus-rust-region-solver" target="_blank" title="https://github.com/nikomatsakis/teyjus-rust-region-solver">here it is</a></p>



<a name="164006091"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006091" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006091">(Apr 23 2019 at 16:32)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> mmh ok, lambda prolog syntax does not speak much to me :p</p>



<a name="164006097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006097">(Apr 23 2019 at 16:33)</a>:</h4>
<p>yeah, it's more for my own memory I guess</p>



<a name="164006115"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006115" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006115">(Apr 23 2019 at 16:33)</a>:</h4>
<p>anyway it doesn't matter</p>



<a name="164006302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006302">(Apr 23 2019 at 16:35)</a>:</h4>
<p>I think the basic rule was just something like</p>
<p><code>forall&lt;x&gt; { 'static: 'x }</code></p>



<a name="164006341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006341">(Apr 23 2019 at 16:36)</a>:</h4>
<p>and then a rule that said <code>forall&lt;'a, 'b&gt; { ('a: 'b) :- root('a), root('b) }</code></p>



<a name="164006380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006380">(Apr 23 2019 at 16:36)</a>:</h4>
<p>where "root" means that they exist in the "root universe"</p>



<a name="164006582"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006582" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006582">(Apr 23 2019 at 16:39)</a>:</h4>
<p>the problem iirc was that you would get more answers than you might like</p>



<a name="164006601"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006601" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006601">(Apr 23 2019 at 16:39)</a>:</h4>
<p>e.g., you might get <code>'a: 'b</code> as one possible constraint but also <code>'a: 'static</code></p>



<a name="164006616"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006616" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006616">(Apr 23 2019 at 16:39)</a>:</h4>
<p>so it seemed like we needed some kind of "entailment" step to try and simplify things</p>



<a name="164006619"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006619" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006619">(Apr 23 2019 at 16:39)</a>:</h4>
<p>I never did explore further</p>



<a name="164006626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006626">(Apr 23 2019 at 16:40)</a>:</h4>
<p>anyway, idk, there's definitely exploration to be done here</p>



<a name="164006693"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006693" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006693">(Apr 23 2019 at 16:40)</a>:</h4>
<p>let's try to get out of this rathole, I went deeper than I perhaps intended</p>



<a name="164006709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006709">(Apr 23 2019 at 16:40)</a>:</h4>
<p>maybe the question is:</p>
<p>what should be the steps for the next 6 weeks once this sprint is over</p>



<a name="164006740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006740">(Apr 23 2019 at 16:40)</a>:</h4>
<blockquote>
<p>anyway, idk, there's definitely exploration to be done here</p>
</blockquote>
<p>and, I suppose, it's relevant to talk about how to do this exploration</p>



<a name="164006758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006758">(Apr 23 2019 at 16:41)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I saw that <span class="user-mention" data-user-id="116883">@tmandry</span> was working on adding more builtin bounds in rustc, which is cool</p>



<a name="164006769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006769">(Apr 23 2019 at 16:41)</a>:</h4>
<p>yes. and some of that logic will need to move to chalk-solve</p>



<a name="164006775"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006775" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006775">(Apr 23 2019 at 16:41)</a>:</h4>
<p>yes</p>



<a name="164006783"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006783" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006783">(Apr 23 2019 at 16:41)</a>:</h4>
<p>I feel like we should probably make some part of our focus be</p>



<a name="164006789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006789">(Apr 23 2019 at 16:41)</a>:</h4>
<p>modeling the builtin-traits</p>



<a name="164006793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006793">(Apr 23 2019 at 16:41)</a>:</h4>
<p>and handling "unenumerable" things</p>



<a name="164006794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006794">(Apr 23 2019 at 16:41)</a>:</h4>
<p>which are highly related</p>



<a name="164006797"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006797" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006797">(Apr 23 2019 at 16:41)</a>:</h4>
<p>do you know what I mean by "unenumerable"?</p>



<a name="164006851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006851">(Apr 23 2019 at 16:42)</a>:</h4>
<p>I guess I wrote “non-enumerable” in the paper doc</p>



<a name="164006852"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006852" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006852">(Apr 23 2019 at 16:42)</a>:</h4>
<p>yeah at least I understand what you mean, and the solution you proposed</p>



<a name="164006854"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006854" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006854">(Apr 23 2019 at 16:42)</a>:</h4>
<p>in particular</p>



<a name="164006857"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006857" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006857">(Apr 23 2019 at 16:42)</a>:</h4>
<p>those feel like an obvious area where the solver could get "lost"</p>



<a name="164006891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006891">(Apr 23 2019 at 16:43)</a>:</h4>
<p>I guess I would nominate <strong>Smart predicate order selection</strong> as an obvious sprint goal because it feels..well.. kinda easy to do</p>



<a name="164006897"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006897" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006897">(Apr 23 2019 at 16:43)</a>:</h4>
<p>certainly adding the <em>hook</em> is easy</p>



<a name="164006903"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006903" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006903">(Apr 23 2019 at 16:43)</a>:</h4>
<p>and it could be used to temporarily side-step some of the non-enumerable problems</p>



<a name="164006910"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006910" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006910">(Apr 23 2019 at 16:43)</a>:</h4>
<p>yes</p>



<a name="164006919"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006919" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006919">(Apr 23 2019 at 16:43)</a>:</h4>
<p>longer term, I would like to have some heuristics</p>



<a name="164006920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006920">(Apr 23 2019 at 16:43)</a>:</h4>
<p>that look at the impls for a given trait</p>



<a name="164006947"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006947" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006947">(Apr 23 2019 at 16:44)</a>:</h4>
<p>and sort of categorize it into "lots of impls" or "few impls"</p>



<a name="164006981"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006981" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006981">(Apr 23 2019 at 16:44)</a>:</h4>
<p>or something</p>



<a name="164006995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164006995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164006995">(Apr 23 2019 at 16:44)</a>:</h4>
<p>but that's another story</p>



<a name="164007012"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007012" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007012">(Apr 23 2019 at 16:44)</a>:</h4>
<p>I feel like that would have to be a data-driven effort</p>



<a name="164007057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007057">(Apr 23 2019 at 16:45)</a>:</h4>
<p>once we have the smart predicate order selection, we may be able to replace the artificial ambiguity hack in <code>program_clauses_for</code> for <code>?T: Sized</code> goals with just a <code>CannotProve</code> result, right? Because these goals will actually never be hit with <code>?T</code> unresolved, unless the goal is indeed totally unconstrained</p>



<a name="164007072"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007072" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007072">(Apr 23 2019 at 16:45)</a>:</h4>
<p>well, not quite</p>



<a name="164007075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007075">(Apr 23 2019 at 16:45)</a>:</h4>
<p>I mean you could</p>



<a name="164007088"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007088" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007088">(Apr 23 2019 at 16:45)</a>:</h4>
<p>but I think are cases that won't work right</p>



<a name="164007182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007182">(Apr 23 2019 at 16:46)</a>:</h4>
<p>in particular</p>



<a name="164007207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007207">(Apr 23 2019 at 16:47)</a>:</h4>
<p>if you had one goal like <code>P(X) :- Q(X), R(X)</code>, perhaps <code>Q(X)</code> requires that <code>X: Sized</code> but <code>R(X)</code> would have specified was <code>X</code> is</p>



<a name="164007217"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007217" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007217">(Apr 23 2019 at 16:47)</a>:</h4>
<p>but if we start processing <code>Q(X)</code> first</p>



<a name="164007223"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007223" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007223">(Apr 23 2019 at 16:47)</a>:</h4>
<p>we would propagate a <code>CannotProve</code></p>



<a name="164007229"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007229" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007229">(Apr 23 2019 at 16:47)</a>:</h4>
<p>that then infects <code>R</code></p>



<a name="164007230"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007230" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007230">(Apr 23 2019 at 16:47)</a>:</h4>
<p>but if we had started first with <code>R</code>, it would be ok</p>



<a name="164007273"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007273" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007273">(Apr 23 2019 at 16:48)</a>:</h4>
<p>the goal of the "bubble up" option I was proposing was that we wouldn't propagate a do-not-prove result, but more like a conditional answer (which is what a "delayed goal" is, really, but also a region constraint)</p>



<a name="164007286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007286">(Apr 23 2019 at 16:48)</a>:</h4>
<p>ok</p>



<a name="164007296"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007296" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007296">(Apr 23 2019 at 16:48)</a>:</h4>
<p>so we really need that un-enumerable result</p>



<a name="164007299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007299">(Apr 23 2019 at 16:48)</a>:</h4>
<p>so once <code>R(X)</code> completed (and <code>X</code> is known) we could process it</p>



<a name="164007308"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007308" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007308">(Apr 23 2019 at 16:48)</a>:</h4>
<blockquote>
<p>so we really need that un-enumerable result</p>
</blockquote>
<p>yes, I think so, but also</p>



<a name="164007327"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007327" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007327">(Apr 23 2019 at 16:48)</a>:</h4>
<p>it seems like, just from a practical POV, that having impls which accept any type <code>T</code> so long as <code>T: Sized</code>  is likely to be common</p>



<a name="164007338"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007338" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007338">(Apr 23 2019 at 16:49)</a>:</h4>
<p>though I imagine .. maybe more general than that even?</p>



<a name="164007343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007343">(Apr 23 2019 at 16:49)</a>:</h4>
<p>i.e., this may not be entirely specific to sized</p>



<a name="164007347"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007347" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007347">(Apr 23 2019 at 16:49)</a>:</h4>
<p>well, ignore what I'm saying, it's not that relevant</p>



<a name="164007359"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007359" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007359">(Apr 23 2019 at 16:49)</a>:</h4>
<p>I guess what I'm saying is -- it may be useful regardless to have the option of "breaking down" a top-level goal into "mid-level goals". This is what the trait solver does today.</p>



<a name="164007361"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007361" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007361">(Apr 23 2019 at 16:49)</a>:</h4>
<p>Admittedly, it is what I am trying to get away from :)</p>



<a name="164007406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007406">(Apr 23 2019 at 16:50)</a>:</h4>
<p>but it seems like it's useful <em>at least</em> for <code>?T: Sized</code></p>



<a name="164007420"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007420" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007420">(Apr 23 2019 at 16:50)</a>:</h4>
<p>maybe we would want it other times for various reasons (primarily efficiency, I imagine)</p>



<a name="164007428"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007428" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007428">(Apr 23 2019 at 16:50)</a>:</h4>
<blockquote>
<p>I guess what I'm saying is -- it may be useful regardless to have the option of "breaking down" a top-level goal into "mid-level goals". This is what the trait solver does today.</p>
</blockquote>
<p>not sure if you know what I mean by this</p>



<a name="164007438"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007438" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007438">(Apr 23 2019 at 16:50)</a>:</h4>
<p>I guess I'm imagining something like <code>impl&lt;H: Hasher&gt; Hash&lt;H&gt; for Foo</code></p>



<a name="164007458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007458">(Apr 23 2019 at 16:51)</a>:</h4>
<p>presently if you were asked <code>Foo: Hash&lt;?H&gt;</code>, the answer is ambiguous -- maybe we might find we would like to "convert" this into a <code>?H: Hasher</code>  constraint?</p>



<a name="164007472"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007472" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007472">(Apr 23 2019 at 16:51)</a>:</h4>
<p>(Of course, we don't <em>have</em> to, because once <code>?H</code> is "more precisely known", we'll have a different canonical query, which was the original plan)</p>



<a name="164007535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007535">(Apr 23 2019 at 16:52)</a>:</h4>
<blockquote>
<p>so we really need that un-enumerable result</p>
</blockquote>
<p>to circle back to this: I feel like implementing this idea isn't that complex</p>



<a name="164007537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007537">(Apr 23 2019 at 16:52)</a>:</h4>
<p>maybe i'm overlooking things</p>



<a name="164007716"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007716" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007716">(Apr 23 2019 at 16:54)</a>:</h4>
<p>so the question is, maybe that is a candidate for a sprint goal, I guess</p>



<a name="164007736"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007736" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007736">(Apr 23 2019 at 16:55)</a>:</h4>
<blockquote>
<p>presently if you were asked <code>Foo: Hash&lt;?H&gt;</code>, the answer is ambiguous -- maybe we might find we would like to "convert" this into a <code>?H: Hasher</code>  constraint?</p>
</blockquote>
<p>ah ok I see</p>



<a name="164007743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007743">(Apr 23 2019 at 16:55)</a>:</h4>
<p>I suppose it will ultimately depend on how many people there are who have time</p>



<a name="164007769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007769">(Apr 23 2019 at 16:55)</a>:</h4>
<p>yes, that does not seem overly complex to me either</p>



<a name="164007812"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007812" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007812">(Apr 23 2019 at 16:55)</a>:</h4>
<p>so, if our goal is to "validate" chalk more</p>



<a name="164007842"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007842" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007842">(Apr 23 2019 at 16:56)</a>:</h4>
<p>but it probably requires a bit of knowledge of how the SLG solver works</p>



<a name="164007868"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007868" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007868">(Apr 23 2019 at 16:56)</a>:</h4>
<p>yes. I <em>think</em> it's probably a good mentoring task</p>



<a name="164007871"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007871" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007871">(Apr 23 2019 at 16:56)</a>:</h4>
<p>so it would be maybe a "more advanced" issue</p>



<a name="164007873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007873">(Apr 23 2019 at 16:56)</a>:</h4>
<p>but "active mentoring"</p>



<a name="164007889"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007889" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007889">(Apr 23 2019 at 16:56)</a>:</h4>
<p>or "intermediate level mentoring"</p>



<a name="164007898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007898">(Apr 23 2019 at 16:56)</a>:</h4>
<p>i.e., it's not trivial, for sure</p>



<a name="164007905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007905">(Apr 23 2019 at 16:56)</a>:</h4>
<p>but it'd be a good way to learn how the solver works :)</p>



<a name="164007945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007945">(Apr 23 2019 at 16:57)</a>:</h4>
<blockquote>
<p>so, if our goal is to "validate" chalk more</p>
</blockquote>
<p>I was going to say:  there are two options here. Option 1 of course is to pursue more integration with rustc itself</p>



<a name="164007953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007953">(Apr 23 2019 at 16:57)</a>:</h4>
<p>Option 2 is to pursue more with RLS</p>



<a name="164007956"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007956" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007956">(Apr 23 2019 at 16:57)</a>:</h4>
<p>I am inclined to do a bit of both ;)</p>



<a name="164007970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007970">(Apr 23 2019 at 16:57)</a>:</h4>
<p>yes lol</p>



<a name="164007973"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007973" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007973">(Apr 23 2019 at 16:57)</a>:</h4>
<p>But I'm wondering, what are the big blockers? i.e., what would it mean to "validate". I feel like we want to be able to run tests</p>



<a name="164007978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007978">(Apr 23 2019 at 16:57)</a>:</h4>
<p>and see where chalk gets stuck</p>



<a name="164007982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007982">(Apr 23 2019 at 16:57)</a>:</h4>
<p>region constraints are obviously a big blocker here</p>



<a name="164007986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164007986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164007986">(Apr 23 2019 at 16:57)</a>:</h4>
<p>I am wondering, though</p>



<a name="164008042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008042">(Apr 23 2019 at 16:58)</a>:</h4>
<p>like, ignoring them is viable for time being in some sense</p>



<a name="164008064"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008064" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008064">(Apr 23 2019 at 16:58)</a>:</h4>
<p>rustc integration is already advanced enough to run tests</p>



<a name="164008066"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008066" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008066">(Apr 23 2019 at 16:58)</a>:</h4>
<p>I know</p>



<a name="164008073"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008073" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008073">(Apr 23 2019 at 16:58)</a>:</h4>
<p>right now, it kind of ignores region constraints, right? I guess.. this is probably "ok"</p>



<a name="164008078"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008078" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008078">(Apr 23 2019 at 16:58)</a>:</h4>
<p>last thing I recall is that it was having troubles with inferring type variables in some cases, I didn't know why</p>



<a name="164008083"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008083" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008083">(Apr 23 2019 at 16:58)</a>:</h4>
<p>i.e., it doesn't lead to spurious compilation failures for the most part?</p>



<a name="164008093"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008093" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008093">(Apr 23 2019 at 16:59)</a>:</h4>
<p>it only ignores region constraints coming from unification</p>



<a name="164008116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008116">(Apr 23 2019 at 16:59)</a>:</h4>
<p>region constraints like in <code>struct S&lt;T&gt; where T: 'static</code> are propagated</p>



<a name="164008119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008119">(Apr 23 2019 at 16:59)</a>:</h4>
<p>I think</p>



<a name="164008120"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008120" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008120">(Apr 23 2019 at 16:59)</a>:</h4>
<p>ok</p>



<a name="164008122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008122">(Apr 23 2019 at 16:59)</a>:</h4>
<p>sounds plausible</p>



<a name="164008138"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008138" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008138">(Apr 23 2019 at 16:59)</a>:</h4>
<blockquote>
<p>last thing I recall is that it was having troubles with inferring type variables in some cases, I didn't know why</p>
</blockquote>
<p>so one plausible thing would be to set a goal of running the test suite</p>



<a name="164008139"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008139" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008139">(Apr 23 2019 at 16:59)</a>:</h4>
<p>or some fraction of it</p>



<a name="164008144"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008144" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008144">(Apr 23 2019 at 16:59)</a>:</h4>
<p>not sure how much runs now :)</p>



<a name="164008159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008159">(Apr 23 2019 at 17:00)</a>:</h4>
<p>or perhaps another way of saying it would be</p>



<a name="164008227"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008227" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008227">(Apr 23 2019 at 17:00)</a>:</h4>
<p>running the test suite  might help us to determine some goals</p>



<a name="164008289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008289">(Apr 23 2019 at 17:01)</a>:</h4>
<p>I gotta run for some other meetings etc, this was useful so far -- I guess running the test suite isn't too hard though</p>



<a name="164008532"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164008532" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164008532">(Apr 23 2019 at 17:04)</a>:</h4>
<p>I gotta run too</p>



<a name="164125201"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164125201" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164125201">(Apr 24 2019 at 22:24)</a>:</h4>
<p><span class="user-mention" data-user-id="131694">@scalexm</span> I don't know if you saw, I had a question for you on my PR: <a href="https://github.com/rust-lang/rust/pull/60183#discussion_r277843999" target="_blank" title="https://github.com/rust-lang/rust/pull/60183#discussion_r277843999">https://github.com/rust-lang/rust/pull/60183#discussion_r277843999</a></p>



<a name="164126409"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164126409" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164126409">(Apr 24 2019 at 22:44)</a>:</h4>
<p><span class="user-mention" data-user-id="116883">@tmandry</span> replied, hope that makes sense</p>



<a name="164126460"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164126460" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164126460">(Apr 24 2019 at 22:45)</a>:</h4>
<p>Btw eventually we won’t need this « ambiguity trick » anymore, as soon as we implement <span class="user-mention" data-user-id="116009">@nikomatsakis</span>’s « non-enumerable » solution</p>



<a name="164126685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/164126685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#164126685">(Apr 24 2019 at 22:49)</a>:</h4>
<p>Yeah that does make sense, thanks!</p>



<a name="167767727"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/chalk%20roadmap/near/167767727" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alexander Regueiro <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/chalk.20roadmap.html#167767727">(Jun 10 2019 at 15:16)</a>:</h4>
<p>Hey folks. How's lifetime support in Chalk coming along lately? Will we get to see a usable version in nightly any time soon? :-)</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>